package main

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

var DB *gorm.DB

// 全局日志
var mysqlLogger logger.Interface

func init() {
	username := "root"
	password := "123"
	host := "127.0.0.1"
	port := 3306
	Dbname := "test"
	timeout := "10s"
	// 全局日志
	mysqlLogger = logger.Default.LogMode(logger.Info)

	//root:123@tcp(127.0.0.1:3306)/test?
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=%s", username, password, host, port, Dbname, timeout)
	//连接mysql 获取 DB类型实例 用户后面的数据库读写操作
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		//SkipDefaultTransaction: true, //跳过默认事务 提高运行性能
		//NamingStrategy: schema.NamingStrategy{
		//	//TablePrefix:   "f_",  //表名前缀
		//	SingularTable: true,  //是否单数表名
		//	NoLowerCase:   false, //是否关闭小写转换
		//},
		//Logger: mysqlLogger, //全局日志
	})
	if err != nil {
		panic("连接数据库失败,error=" + err.Error())
	}
	DB = db
}

//type Student struct {
//	ID    uint    `gorm:"size:10"`
//	Name  string  `gorm:"size:16;not null;comment:姓名"`
//	Age   int     `gorm:"size:3;not null;comment:年龄"`
//	Email *string `gorm:"size:128;comment:邮箱;unique"` //使用指针是为了存空值
//}

//func main() {
//	//DB = DB.Session(&gorm.Session{
//	//	Logger: mysqlLogger,
//	//})
//	//err := DB.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&Student{}) //迁移表
//	//if err != nil {
//	//	fmt.Println("迁移表失败")
//	//	return
//	//}
//}
